﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;
using System.Windows.Forms;
namespace Arthus
{
    class ZAG
    {
        MySqlConnection konekcija;
        MySqlCommand komanda = new MySqlCommand();
        MySqlDataReader datareader = null;
        MySqlDataAdapter adapter = null;
        DataTable dataTable = null;
        DataSet dataSet = null;
        ZAG zagObjekat = null;
        Posjed posjedObjekat = null;
        FIN finObjekat = null;
        Partneri partnerObjekat = null;
        Preduzece preduzeceObjekat = null;

        public String VratiANiliNENaOsnovu0ili10(int zagklj)
        { //metoda koja za uneto 0 ili 10 vraca AN ili nista
            String rezultat = "";
            if (zagklj != 10)
            {
                //rezultat ako je zagklj 10
                rezultat = "";
            }
            else
            {
                //rezultat ako nije zagklj 10
                rezultat = "AN";
            }
            return rezultat;
        }

        public void KnjizenjePopuniGridView(String pocetni, String krajnji, DataGridView dataGridViewKnjizenje)
        {
            ZAG zagObjekat = new ZAG();
            Partneri partneriObjekat = new Partneri();
            try
            {
                //ciscenje i spremanje datagridview-a
                dataGridViewKnjizenje.DataSource = null;
                dataGridViewKnjizenje.Rows.Clear();
                dataGridViewKnjizenje.Refresh();

                //konekcija sa bazom i punjenje datatable-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT ZAGID, DATE_FORMAT(ZAGDAT, '%d.%m.%Y.'), ZAGVRS, ZAGKLJ, ZAGOZN, DATE_FORMAT(ZAGDDO, '%d.%m.%Y.'), ZAGNAP, SUBSTRING(ZAGOZN, 4,6), " +
                    "ZAGPAR FROM zag WHERE ZAGDAT BETWEEN '" + pocetni + "' AND '" + krajnji + "';";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    dataGridViewKnjizenje.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2],
                        zagObjekat.ProveraDalImaNivelacijeIliNeZaDostavnicu((int)dataTable.Rows[i][0]),
                        dataTable.Rows[i][4], dataTable.Rows[i][5], dataTable.Rows[i][6], dataTable.Rows[i][7], dataTable.Rows[i][8], 
                        partneriObjekat.VratiOznakuPartneraNaOsnovuID((int)dataTable.Rows[i][8]));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Clear();
                adapter.Dispose();
                konekcija.Close();
            }
        }    //metoda koja puni dataGridViewKnjizenje podacima iz baze
        public String ProveraDalImaNivelacijeIliNeZaDostavnicu(int zagID) {
            String rezultat = "";
            try
            {
                //konekcija sa bazom i punjenje datatable-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT COUNT(*) FROM STV WHERE STVI16<0 AND STVZAG="+zagID+"";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                int countRezultat = Convert.ToInt32(datareader[0].ToString());

                if (countRezultat > 0)
                {
                    rezultat = "AN";
                }
                else {
                    rezultat = "";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
                return rezultat;
        }

        public int VratiPovecanID()
        {
            int rezultat = 0;

            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT MAX(ZAGID) FROM ZAG;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
                rezultat++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }    //metoda koja vraca povecan id za 1

        public int VratiPovecanRedniBrojPremaDokumentu(string dokument, string datum)
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                //u zavisnosti od dokumenta bira se zagbr1 od dokumenta
                komanda.CommandText = "SELECT IFNULL(MAX(ZAGBR1),0) FROM ZAG WHERE ZAGVRS='"+dokument+"' AND DATE_FORMAT(ZAGDAT, '%Y')='" + datum + "'";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                if (datareader.IsDBNull(0))
                {
                }
                else
                {
                    rezultat = Convert.ToInt32(datareader.GetValue(0));
                    rezultat++;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public void UbaciUZAGzaVDS(string dokument, DateTimePicker datumUnosa, ComboBox izVeleprodaje, ComboBox uMaloprodaju, TextBox autoBrojDokumenta1,
            TextBox autoBrojDokumenta2, TextBox poDokumentu, DateTimePicker datumDokumenta)
        {
            zagObjekat = new ZAG();
            posjedObjekat = new Posjed();
            Preduzece preduzeceObjekat = new Preduzece();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;

                int autobrojdokumenta1 = 0;
                //rad sa autoBrojDokumenta 1
                if (autoBrojDokumenta1.Text.Equals("") || autoBrojDokumenta1 != null || autoBrojDokumenta1.Text.Equals(null))
                {
                    autobrojdokumenta1 = zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VDS", datumUnosa.Value.Date.ToString("yyyy"));
                }
                else
                {
                    try
                    {
                        autobrojdokumenta1 = Convert.ToInt32(autoBrojDokumenta1.Text);
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Morate uneti brojeve a ne slova ili specijalne znake! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Neočekivana greška \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                }
                int autobrojdokumenta2 = 0;
                //rad sa autoBrojDokumenta 2
                if (autoBrojDokumenta2.Text.Equals("") || autoBrojDokumenta2 != null || autoBrojDokumenta2.Text.Equals(null))
                {
                    autobrojdokumenta2 = 0;
                }
                else
                {
                    try
                    {
                        autobrojdokumenta2 = Convert.ToInt32(autoBrojDokumenta2.Text);
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Morate uneti brojeve a ne slova ili specijalne znake! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (IndexOutOfRangeException ex)
                    {
                        MessageBox.Show("Previše karaktera u nekom od polja! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Neočekivana greška \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                }

                komanda.CommandText = string.Format("INSERT INTO `zag`(`ZAGID`, `ZAGDAT`, `ZAGVRS`, `ZAGOZN`, `ZAGOZX`, `ZAGDDO`, `ZAGNAP`," +
                    " `ZAGBRK`, `ZAGNAL`,`ZAGMA1`, `ZAGMA2`, `ZAGBR1`, `ZAGBR2`,`ZAGPRE`, `ZAGWIB`, `ZAGPAR`, `ZAGDSP`, `ZAGIIM`, `ZAGIDT`, `ZAGKLJ`)" +
                    "VALUES (" + zagObjekat.VratiPovecanID() + ", '" + datumUnosa.Value.Date.ToString("yyyy-MM-dd") + "','VDS','"
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(izVeleprodaje.SelectedItem.ToString()) + "-VDS-"
                    + zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VDS", datumUnosa.Value.Date.ToString("yyyy")) +
                    "','" + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-VDS-" + zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VDS", datumUnosa.Value.Date.ToString("yyyy"))
                    + "','" + datumDokumenta.Value.Date.ToString("yyyy-MM-dd") + "','" + poDokumentu.Text + "',0,0," + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(izVeleprodaje.SelectedItem.ToString()) +
                    "," + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(uMaloprodaju.SelectedItem.ToString()) + ","
                    + autobrojdokumenta1 + "," + autobrojdokumenta2 + ","
                    + preduzeceObjekat.VratiIDPreduzecaNaOsnovuOznake(statickePromenljive.nazivPreduzeca) + ",0,0,'" + datumUnosa.Value.Date.ToString("yyyy-MM-dd") +
                    "','Agrovin',NOW(),0)");
                int response = komanda.ExecuteNonQuery();
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
                MessageBox.Show("Uspešno uneta dostavnica! \n", "Obaveštenje!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        } //metoda koja ubacuje zaglavlje za dostavnicu
        public void IzmeniUZAGzaVDS(string dokument, DateTimePicker datumUnosa, ComboBox izVeleprodaje, ComboBox uMaloprodaju, TextBox autoBrojDokumenta1,
            TextBox autoBrojDokumenta2, TextBox poDokumentu, DateTimePicker datumDokumenta)
        {
            zagObjekat = new ZAG();
            posjedObjekat = new Posjed();
            Preduzece preduzeceObjekat = new Preduzece();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;

                int autobrojdokumenta2 = 0;
                //rad sa autoBrojDokumenta 2
                if (autoBrojDokumenta2.Text.Equals("") || autoBrojDokumenta2 != null || autoBrojDokumenta2.Text.Equals(null) || autoBrojDokumenta2.Text.Length <= 0)
                {
                    autobrojdokumenta2 = 0;
                }
                else {
                    autobrojdokumenta2 = Convert.ToInt32(autoBrojDokumenta2.Text);
                }

                /*komanda.CommandText = @"UPDATE ZAG SET ZAGOZN='" + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(izVeleprodaje.SelectedItem.ToString()) + "-VDS-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGOZX='" + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-VDS-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGNAP='"+poDokumentu.Text+"', ZAGMA1="
                    +posjedObjekat.VratiIDPosjedaNaOsnovuOznake(izVeleprodaje.SelectedItem.ToString())+", ZAGMA2="
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(uMaloprodaju.SelectedItem.ToString()) + ", ZAGBR1=" + Convert.ToInt32(autoBrojDokumenta1.Text) + ", ZAGBR2="
                    + autobrojdokumenta2 + ", ZAGIDT=NOW() WHERE ZAGID="+Convert.ToInt32(dostavnicaForma.IDzaglavlja)+";";*/
                komanda.CommandText = @"UPDATE ZAG SET ZAGOZN='" + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(izVeleprodaje.SelectedItem.ToString()) + "-VDS-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGOZX='" + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-VDS-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGNAP='" + poDokumentu.Text + "', ZAGMA1="
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(izVeleprodaje.SelectedItem.ToString()) + ", ZAGMA2=" 
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(uMaloprodaju.SelectedItem.ToString()) + ", ZAGBR1="
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + ", ZAGBR2=" + autobrojdokumenta2 + ", ZAGIDT=NOW() WHERE ZAGID="
                    +Convert.ToInt32(dostavnicaForma.IDzaglavlja)+" ";
                int response = komanda.ExecuteNonQuery();
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
                MessageBox.Show("Dostavnica je izmenjena! \n", "Obaveštenje!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        } //metoda koja menja zaglavlje za dostavnicu

        public void UbaciUZAGzaMNP(string dokument, DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2, 
            DateTimePicker datumDokumenta)
        {
            zagObjekat = new ZAG();
            posjedObjekat = new Posjed();
            Preduzece preduzeceObjekat = new Preduzece();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;

                int autobrojdokumenta1 = 0;
                //rad sa autoBrojDokumenta 1
                if (autoBrojDokumenta1.Text.Equals("") || autoBrojDokumenta1 != null || autoBrojDokumenta1.Text.Equals(null))
                {
                    autobrojdokumenta1 = zagObjekat.VratiPovecanRedniBrojPremaDokumentu("MNP", datumUnosa.Value.Date.ToString("yyyy"));
                }
                else
                {
                    try
                    {
                        autobrojdokumenta1 = Convert.ToInt32(autoBrojDokumenta1.Text);
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Morate uneti brojeve a ne slova ili specijalne znake! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Neočekivana greška \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                }
                int autobrojdokumenta2 = 0;
                //rad sa autoBrojDokumenta 2
                if (autoBrojDokumenta2.Text.Equals("") || autoBrojDokumenta2 != null || autoBrojDokumenta2.Text.Equals(null))
                {
                    autobrojdokumenta2 = 0;
                }
                else
                {
                    try
                    {
                        autobrojdokumenta2 = Convert.ToInt32(autoBrojDokumenta2.Text);
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Morate uneti brojeve a ne slova ili specijalne znake! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (IndexOutOfRangeException ex)
                    {
                        MessageBox.Show("Previše karaktera u nekom od polja! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Neočekivana greška \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                }

                komanda.CommandText = string.Format("INSERT INTO `zag`(`ZAGID`, `ZAGDAT`, `ZAGVRS`, `ZAGOZN`, `ZAGOZX`, `ZAGDDO`, `ZAGNAP`," +
                    " `ZAGBRK`, `ZAGNAL`,`ZAGMA1`, `ZAGMA2`, `ZAGBR1`, `ZAGBR2`,`ZAGPRE`, `ZAGWIB`, `ZAGPAR`, `ZAGDSP`, `ZAGIIM`, `ZAGIDT`, `ZAGKLJ`)" +
                    "VALUES (" + zagObjekat.VratiPovecanID() + ", '" + datumUnosa.Value.Date.ToString("yyyy-MM-dd") + "','MNP','"
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + "-MNP-"
                    + zagObjekat.VratiPovecanRedniBrojPremaDokumentu("MNP", datumUnosa.Value.Date.ToString("yyyy")) +
                    "','" + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-MNP-" + zagObjekat.VratiPovecanRedniBrojPremaDokumentu("MNP", datumUnosa.Value.Date.ToString("yyyy"))
                    + "','" + datumDokumenta.Value.Date.ToString("yyyy-MM-dd") + "',' ',0,0," + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) +
                    ",0,"+ autobrojdokumenta1 + "," + autobrojdokumenta2 + "," + preduzeceObjekat.VratiIDPreduzecaNaOsnovuOznake(statickePromenljive.nazivPreduzeca) + ",0,0,'" 
                    + datumUnosa.Value.Date.ToString("yyyy-MM-dd") + "','Agrovin',NOW(),0)");
                int response = komanda.ExecuteNonQuery();
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
                MessageBox.Show("Uspešno unet nalog prodaje! \n", "Obaveštenje!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
        public void IzmeniUZAGzaMNP(string dokument, DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2,
            DateTimePicker datumDokumenta, String idZag)
        {
            zagObjekat = new ZAG();
            posjedObjekat = new Posjed();
            Preduzece preduzeceObjekat = new Preduzece();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;

                int autobrojdokumenta2 = 0;
                //rad sa autoBrojDokumenta 2
                if (autoBrojDokumenta2.Text.Equals("") || autoBrojDokumenta2 != null || autoBrojDokumenta2.Text.Equals(null) || autoBrojDokumenta2.Text.Length <= 0)
                {
                    autobrojdokumenta2 = 0;
                }
                else
                {
                    autobrojdokumenta2 = Convert.ToInt32(autoBrojDokumenta2.Text);
                }

                /*komanda.CommandText = @"UPDATE ZAG SET ZAGOZN='" + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(izVeleprodaje.SelectedItem.ToString()) + "-VDS-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGOZX='" + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-VDS-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGNAP='"+poDokumentu.Text+"', ZAGMA1="
                    +posjedObjekat.VratiIDPosjedaNaOsnovuOznake(izVeleprodaje.SelectedItem.ToString())+", ZAGMA2="
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(uMaloprodaju.SelectedItem.ToString()) + ", ZAGBR1=" + Convert.ToInt32(autoBrojDokumenta1.Text) + ", ZAGBR2="
                    + autobrojdokumenta2 + ", ZAGIDT=NOW() WHERE ZAGID="+Convert.ToInt32(dostavnicaForma.IDzaglavlja)+";";*/
                komanda.CommandText = @"UPDATE ZAG SET ZAGOZN='" + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + "-MNP-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGOZX='" + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-MNP-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGNAP=' ', ZAGMA1="
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + ", ZAGMA2=0, ZAGBR1="
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + ", ZAGBR2=" + autobrojdokumenta2 + ", ZAGIDT=NOW() WHERE ZAGID="
                    + Convert.ToInt32(idZag) + " ";
                int response = komanda.ExecuteNonQuery();
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
                MessageBox.Show("Nalog prodaje je izmenjen! \n", "Obaveštenje!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        } //metoda koja menja zaglavlje za dostavnicu

        public void UbaciUZAGzaVUR(string dokument, DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2,
            TextBox poDokumentu, DateTimePicker datumDokumenta, DateTimePicker datumDospeca, int partnerID, TextBox osnovicaVisaTarifa, TextBox pdvVisaTarifa,
            TextBox osnovicaNizaTarifa, TextBox pdvNizaTarifa, TextBox osnovicaOtkup, TextBox pdvOtkup, TextBox osnovicaBezPdv)
        {
            zagObjekat = new ZAG();
            posjedObjekat = new Posjed();
            preduzeceObjekat = new Preduzece();
            partnerObjekat=new Partneri();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;

                int autobrojdokumenta1 = 0;
                //rad sa autoBrojDokumenta 1
                if (autoBrojDokumenta1.Text.Equals("") || autoBrojDokumenta1 != null || autoBrojDokumenta1.Text.Equals(null))
                {
                    autobrojdokumenta1 = zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VUR", datumUnosa.Value.Date.ToString("yyyy"));
                }
                else
                {
                    try
                    {
                        autobrojdokumenta1 = Convert.ToInt32(autoBrojDokumenta1.Text);
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Morate uneti brojeve a ne slova ili specijalne znake! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Neočekivana greška \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                }
                int autobrojdokumenta2 = 0;
                //rad sa autoBrojDokumenta 2
                if (autoBrojDokumenta2.Text.Equals("") || autoBrojDokumenta2 != null || autoBrojDokumenta2.Text.Equals(null))
                {
                    autobrojdokumenta2 = 0;
                }
                else
                {
                    try
                    {
                        autobrojdokumenta2 = Convert.ToInt32(autoBrojDokumenta2.Text);
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Morate uneti brojeve a ne slova ili specijalne znake! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (IndexOutOfRangeException ex)
                    {
                        MessageBox.Show("Previše karaktera u nekom od polja! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Neočekivana greška \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                }

                komanda.CommandText = string.Format("INSERT INTO `zag`(`ZAGID`, `ZAGDAT`, `ZAGVRS`, `ZAGOZN`, `ZAGOZX`, `ZAGDDO`, `ZAGNAP`," +
                    " `ZAGBRK`, `ZAGNAL`,`ZAGMA1`, `ZAGMA2`, `ZAGBR1`, `ZAGBR2`,`ZAGPRE`, `ZAGWIB`, `ZAGPAR`, `ZAGDSP`, ZAGPDV, ZAGO18, ZAGO08, ZAGO05, ZAGO00, ZAGP18, ZAGP08,"
                    +" ZAGP00, `ZAGIIM`, `ZAGIDT`, `ZAGKLJ`)" +
                    "VALUES (" + zagObjekat.VratiPovecanID() + ", '" + datumUnosa.Value.Date.ToString("yyyy-MM-dd") + "','VUR','"
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + "-VUR-"
                    + zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VUR", datumUnosa.Value.Date.ToString("yyyy")) +
                    "','" + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-VUR-" + zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VUR", datumUnosa.Value.Date.ToString("yyyy"))
                    + "','" + datumDokumenta.Value.Date.ToString("yyyy-MM-dd") + "','"+poDokumentu.Text+"',0,0," + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) +
                    ",0," + autobrojdokumenta1 + "," + autobrojdokumenta2 + "," + preduzeceObjekat.VratiIDPreduzecaNaOsnovuOznake(statickePromenljive.nazivPreduzeca) + ",0," + partnerID + ",  '"
                    + datumDospeca.Value.Date.ToString("yyyy-MM-dd") + "', "+partnerObjekat.Vrati1ili0NaOsnovuPDVObveznik(partnerID)+",  " +Convert.ToDecimal(osnovicaVisaTarifa.Text)+", "
                    + Convert.ToDecimal(osnovicaNizaTarifa.Text) + ", "+Convert.ToDecimal(osnovicaOtkup.Text)+", " + Convert.ToDecimal(osnovicaBezPdv.Text) + ", " + Convert.ToDecimal(pdvVisaTarifa.Text) + ", "
                    + Convert.ToDecimal(pdvNizaTarifa.Text) + ", " + Convert.ToDecimal(pdvOtkup.Text) + ",'Agrovin',NOW(),0)");
                int response = komanda.ExecuteNonQuery();
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
                kalkulacijaForma.IDzaglavlja = zagObjekat.VratiPovecanID() - 1;
                MessageBox.Show("Uspešno uneta kalkulacija! \n", "Obaveštenje!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
        public void IzmeniUZAGzaVUR(string dokument, DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2,
            TextBox poDokumentu, DateTimePicker datumDokumenta, DateTimePicker datumDospeca, int partnerID, TextBox osnovicaVisaTarifa, TextBox pdvVisaTarifa,
            TextBox osnovicaNizaTarifa, TextBox pdvNizaTarifa, TextBox osnovicaOtkup, TextBox pdvOtkup, TextBox osnovicaBezPdv)
        {
            zagObjekat = new ZAG();
            posjedObjekat = new Posjed();
            preduzeceObjekat = new Preduzece();
            partnerObjekat = new Partneri();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;

                int autobrojdokumenta2 = 0;
                //rad sa autoBrojDokumenta 2
                if (autoBrojDokumenta2.Text.Equals("") || autoBrojDokumenta2 != null || autoBrojDokumenta2.Text.Equals(null) || autoBrojDokumenta2.Text.Length <= 0)
                {
                    autobrojdokumenta2 = 0;
                }
                else
                {
                    autobrojdokumenta2 = Convert.ToInt32(autoBrojDokumenta2.Text);
                }
                komanda.CommandText = @"UPDATE ZAG SET ZAGOZN='" + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + "-VUR-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGDAT='" + datumUnosa.Value.Date.ToString("yyyy-MM-dd") + "',  ZAGOZX='" 
                    + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-VUR-"+ Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGDDO='" 
                    + datumDokumenta.Value.Date.ToString("yyyy-MM-dd") + "', ZAGNAP='" + poDokumentu.Text + "', ZAGMA1=" 
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + ", ZAGBR1="
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + ", ZAGBR2=" + autobrojdokumenta2 + ", ZAGPAR="+partnerID+", ZAGDSP='" 
                    + datumDospeca.Value.Date.ToString("yyyy-MM-dd") + "', ZAGPDV="+partnerObjekat.Vrati1ili0NaOsnovuPDVObveznik(partnerID)+", ZAGO18="
                    + Convert.ToDecimal(osnovicaVisaTarifa.Text) + ", ZAGO08=" + Convert.ToDecimal(osnovicaNizaTarifa.Text) + ", ZAGO05=" 
                    + Convert.ToDecimal(osnovicaOtkup.Text) + ", ZAGO00="
                    + Convert.ToDecimal(osnovicaBezPdv.Text) + ", ZAGP18=" + Convert.ToDecimal(pdvVisaTarifa.Text) + ", ZAGP08="
                    +Convert.ToDecimal(pdvNizaTarifa.Text)+", ZAGP00="+Convert.ToDecimal(pdvOtkup.Text)+", ZAGIDT=NOW() "
                    +" WHERE ZAGID=" + Convert.ToInt32(kalkulacijaForma.IDzaglavlja) + " ";
                int response = komanda.ExecuteNonQuery();
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
                MessageBox.Show("Kalkulacija je izmenjena! \n", "Obaveštenje!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void UbaciUZAGzaVIR(string dokument, DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2,
            TextBox poDokumentu, DateTimePicker datumDokumenta, DateTimePicker datumDospeca, int partnerID, string mir, string dir, string mpd, string dpd,
            string ol, string ol2, string nopo, string ni, string n, string n2)
        {
            zagObjekat = new ZAG();
            posjedObjekat = new Posjed();
            preduzeceObjekat = new Preduzece();
            partnerObjekat = new Partneri();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;

                int autobrojdokumenta1 = 0;
                //rad sa autoBrojDokumenta 1
                if (autoBrojDokumenta1.Text.Equals("") || autoBrojDokumenta1 != null || autoBrojDokumenta1.Text.Equals(null))
                {
                    autobrojdokumenta1 = zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VIR", datumUnosa.Value.Date.ToString("yyyy"));
                }
                else
                {
                    try
                    {
                        autobrojdokumenta1 = Convert.ToInt32(autoBrojDokumenta1.Text);
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Morate uneti brojeve a ne slova ili specijalne znake! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Neočekivana greška \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                }
                int autobrojdokumenta2 = 0;
                //rad sa autoBrojDokumenta 2
                if (autoBrojDokumenta2.Text.Equals("") || autoBrojDokumenta2 != null || autoBrojDokumenta2.Text.Equals(null))
                {
                    autobrojdokumenta2 = 0;
                }
                else
                {
                    try
                    {
                        autobrojdokumenta2 = Convert.ToInt32(autoBrojDokumenta2.Text);
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Morate uneti brojeve a ne slova ili specijalne znake! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (IndexOutOfRangeException ex)
                    {
                        MessageBox.Show("Previše karaktera u nekom od polja! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Neočekivana greška \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                    }
                }
                int breee = zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VIR", datumUnosa.Value.Date.ToString("yyyy"));
                komanda.CommandText = string.Format("INSERT INTO `zag`(`ZAGID`, `ZAGDAT`, `ZAGVRS`, `ZAGOZN`, `ZAGOZX`, `ZAGDDO`, `ZAGNAP`," +
                    " `ZAGBRK`, `ZAGNAL`,`ZAGMA1`, `ZAGMA2`, `ZAGBR1`, `ZAGBR2`,`ZAGPRE`, `ZAGWIB`, `ZAGPAR`, ZAGMIR, ZAGDIR, ZAGMPD, ZAGDPD, "
                    +" ZAGMC1, ZAGMC2, ZAGNPO, ZAGISP, ZAGKMA, ZAGKMB, `ZAGDSP`, ZAGPDV, `ZAGIIM`, `ZAGIDT`, `ZAGKLJ`)" +
                    "VALUES (" + zagObjekat.VratiPovecanID() + ", '" + datumUnosa.Value.Date.ToString("yyyy-MM-dd") + "','VIR','"
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + "-VIR-"
                    + zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VIR", datumUnosa.Value.Date.ToString("yyyy")) +
                    "','" + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-VIR-" + zagObjekat.VratiPovecanRedniBrojPremaDokumentu("VIR", datumUnosa.Value.Date.ToString("yyyy"))
                    + "','" + datumDokumenta.Value.Date.ToString("yyyy-MM-dd") + "','" + poDokumentu.Text + "',0,0," + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) +
                    ",0," + autobrojdokumenta1 + "," + autobrojdokumenta2 + "," + preduzeceObjekat.VratiIDPreduzecaNaOsnovuOznake(statickePromenljive.nazivPreduzeca) + ",0," + partnerID + ", "
                    +" '"+mir+"', '"+dir+"', '"+mpd+"', '"+dpd+"', '"+ol+"', '"+ol2+"', '"+nopo+"', '"+ni+"', '"+n+"', '"+n2+"', '"
                    + datumDospeca.Value.Date.ToString("yyyy-MM-dd") + "', " + partnerObjekat.Vrati1ili0NaOsnovuPDVObveznik(partnerID) + ",'Agrovin',NOW(),0)");
                int response = komanda.ExecuteNonQuery();
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
                IzlazniRacun.izlazniRacunForma.IDzaglavlja = zagObjekat.VratiPovecanID() - 1;
                MessageBox.Show("Uspešno uneta kalkulacija! \n", "Obaveštenje!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
        public void IzmeniUZAGzaVIR(string dokument, DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2,
            TextBox poDokumentu, DateTimePicker datumDokumenta, DateTimePicker datumDospeca, int partnerID)
        {
            zagObjekat = new ZAG();
            posjedObjekat = new Posjed();
            preduzeceObjekat = new Preduzece();
            partnerObjekat = new Partneri();
            int bre = IzlazniRacun.izlazniRacunForma.IDzaglavlja;
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;

                int autobrojdokumenta2 = 0;
                //rad sa autoBrojDokumenta 2
                if (autoBrojDokumenta2.Text.Equals("") || autoBrojDokumenta2 != null || autoBrojDokumenta2.Text.Equals(null) || autoBrojDokumenta2.Text.Length <= 0)
                {
                    autobrojdokumenta2 = 0;
                }
                else
                {
                    autobrojdokumenta2 = Convert.ToInt32(autoBrojDokumenta2.Text);
                }
                komanda.CommandText = @"UPDATE ZAG SET ZAGOZN='" + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + "-VIR-"
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGDAT='" + datumUnosa.Value.Date.ToString("yyyy-MM-dd") + "',  ZAGOZX='"
                    + datumUnosa.Value.Date.ToString("yyyy") + "-1-1-VIR-" + Convert.ToInt32(autoBrojDokumenta1.Text) + "', ZAGDDO='"
                    + datumDokumenta.Value.Date.ToString("yyyy-MM-dd") + "', ZAGNAP='" + poDokumentu.Text + "', ZAGMA1="
                    + posjedObjekat.VratiIDPosjedaNaOsnovuOznake(prodajnaJedinica.SelectedItem.ToString()) + ", ZAGBR1="
                    + Convert.ToInt32(autoBrojDokumenta1.Text) + ", ZAGBR2=" + autobrojdokumenta2 + ", ZAGPAR=" + partnerID + ", ZAGDSP='"
                    + datumDospeca.Value.Date.ToString("yyyy-MM-dd") + "', ZAGPDV=" + partnerObjekat.Vrati1ili0NaOsnovuPDVObveznik(partnerID) + ", "
                    +" ZAGIDT=NOW() "+ " WHERE ZAGID=" + Convert.ToInt32(IzlazniRacun.izlazniRacunForma.IDzaglavlja) + " ";
                int response = komanda.ExecuteNonQuery();
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
                MessageBox.Show("Izlazni račun je izmenjen! \n", "Obaveštenje!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void PopuniKontroleDostavnice(DateTimePicker datumUnosa, ComboBox izVeleprodaje, ComboBox uMaloprodaju, TextBox autoBrojDokumenta1,
            TextBox autoBrojDokumenta2, TextBox poDokumentu, DateTimePicker datumDokumenta)
        {
            posjedObjekat = new Posjed();
            if (dostavnicaForma.IDzaglavlja.Equals("") || dostavnicaForma.IDzaglavlja.Equals(null) || dostavnicaForma.IDzaglavlja == null || dostavnicaForma.IDzaglavlja == 0)
            {
                //rezultat ako je IDzaglavlja iz dostavnicaForme prazan
            }
            else
            {
                //rezultat ako IDzaglavlja iz dostavnicaForme nije prazan
                try
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT ZAGDAT, ZAGMA1, ZAGMA2, ZAGBR1, ZAGBR2, ZAGNAP, ZAGDDO FROM ZAG WHERE ZAGID="
                        + Convert.ToInt32(dostavnicaForma.IDzaglavlja) + "";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        datumUnosa.Text = datareader["ZAGDAT"].ToString();
                        izVeleprodaje.Text = posjedObjekat.VratiOznakuPosjedaNaOsnovuID(Convert.ToInt32(datareader["ZAGMA1"].ToString()));
                        uMaloprodaju.Text = posjedObjekat.VratiOznakuPosjedaNaOsnovuID(Convert.ToInt32(datareader["ZAGMA2"].ToString()));
                        autoBrojDokumenta1.Text = datareader["ZAGBR1"].ToString();
                        int ZAGBR2 = Convert.ToInt32(datareader["ZAGBR2"].ToString());
                        if (ZAGBR2 == 0)
                        {
                            autoBrojDokumenta2.Text = "";
                        }
                        else
                        {
                            autoBrojDokumenta2.Text = ZAGBR2.ToString();
                        }
                        poDokumentu.Text = datareader["ZAGNAP"].ToString();
                        datumDokumenta.Text = datareader["ZAGDDO"].ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
        } //metoda koja puni kontrole na dostavnici

        public bool ProveraProknjizenDokumentIliNe(int IDZAG)
        {
            bool rezultat = true;
            String provera = "";
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT ZAGKNJ FROM ZAG WHERE ZAGID=" + IDZAG + ";";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    provera = datareader["ZAGKNJ"].ToString();
                }
                if (provera == "" || provera==null || provera.Equals("") || provera.Equals("NULL") || provera.Equals(" "))
                {
                    rezultat = false;
                }
                else
                {
                    rezultat = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        } //metoda koja proverava dal je zaglavlje proknjizeno ili ne kroz polje ZAGKNJ

        public void PromenaUZAGPrilikomUnosaNoveStavkeDostavnica(decimal mpMarza, int idZaglavlja)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                if (mpMarza < 0)
                {
                    komanda.CommandText = "UPDATE ZAG SET ZAGUDT=NOW(), ZAGKLJ=10 WHERE ZAGID="+idZaglavlja+";";
                }
                else
                {
                    komanda.CommandText = "UPDATE ZAG SET ZAGUDT=NOW() WHERE ZAGID=" + idZaglavlja + ";";
                }
                komanda.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
        public void PopuniZAGKLJNaOsnovuDalPostojiANIliNe(DataGridView datagridviewKnjizenje) {

            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                for (int i = 0; i < datagridviewKnjizenje.RowCount; i++)
                {
                    if (datagridviewKnjizenje.Rows[i].Cells[3].Value.ToString().Equals("AN"))
                    {
                        komanda.CommandText = "UPDATE ZAG SET ZAGKLJ=10 WHERE ZAGID=" + Convert.ToInt32(datagridviewKnjizenje.Rows[i].Cells[0].Value.ToString()) + ";";
                        int response = komanda.ExecuteNonQuery();
                    }
                    else {
                        komanda.CommandText = "UPDATE ZAG SET ZAGKLJ=0 WHERE ZAGID=" + Convert.ToInt32(datagridviewKnjizenje.Rows[i].Cells[0].Value.ToString()) + ";";
                        int response = komanda.ExecuteNonQuery();
                    }
                }
                //ako je sve uspesno proslo izbacujemo obavestenje o tome
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
        public void ObrisiZaglavljeNaOsnovuID(int idZAG)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "DELETE FROM ZAG WHERE ZAGID=" + idZAG + ";";
                komanda.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        } //brisanje zaglavlja na osnovu zad

        public void PromenaUZAGPrilikomUnosaNoveStavkeKalkulacija(decimal nivelacija, int idZaglavlja)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                if (nivelacija != 0)
                {
                    komanda.CommandText = "UPDATE ZAG SET ZAGUDT=NOW(), ZAGKLJ=10 WHERE ZAGID=" + idZaglavlja + ";";
                }
                else {
                    komanda.CommandText = "UPDATE ZAG SET ZAGUDT=NOW() WHERE ZAGID=" + idZaglavlja + ";";
                }
                komanda.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void PopuniKontroleUKnjizenjeDokumenataForma(String idZag, TextBox preduzece, TextBox vrstaNaloga, TextBox opis, TextBox opis2,  TextBox vrstaNalogaNaziv, 
            TextBox autoBrojDokumenta) {
            try
            {
                if (idZag.Length > 0)
                {
                    Preduzece preduzeceObjekat = new Preduzece();
                    VrstaNaloga vrstaNalogaObjekat = new VrstaNaloga();
                    //konekcija sa bazom
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandType = CommandType.Text;
                    komanda.CommandText = "SELECT ZAGPRE, ZAGVRS, ZAGOZN, ZAGBR1 FROM ZAG WHERE ZAGID=" + Convert.ToInt32(idZag) + ";";
                    datareader = komanda.ExecuteReader();
                    datareader.Read();
                    preduzece.Text = preduzeceObjekat.VratiOznakuPreduzecaNaOsnovuID(Convert.ToInt32(datareader[0].ToString()));
                    vrstaNaloga.Text = vrstaNalogaObjekat.VratiOznakuVrsteNalogaNaOSnovuDokumentaVrsteNaloga(datareader[1].ToString());
                    vrstaNalogaNaziv.Text = vrstaNalogaObjekat.VratiNazivVrsteNalogaNaOsnovuDokumentaVrsteNaloga(datareader[1].ToString());
                    autoBrojDokumenta.Text = datareader[3].ToString();
                    if (datareader[1].ToString().Equals("VDS")) { 
                    //ukoliko je dokument dostavnica
                        opis.Text = "Dostavnica";
                    }
                    else if(datareader[1].ToString().Equals("VUR")){
                    //ukoliko je dokument kalkulacija
                        opis.Text="Kalkulacija";
                    }
                    else if (datareader[1].ToString().Equals("VIR")) {
                        opis.Text = "Izlazni račun";
                    }
                    opis2.Text = datareader[2].ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
        }

        public String VratiVrstuZaglavljaNaOsnovuID(int idZaglavlja) {
            String rezultat = "";
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT ZAGVRS FROM ZAG WHERE ZAGID=" + idZaglavlja + ";";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = datareader[0].ToString() ;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public int VratiIDFINnalogaNaOsnovuZAGID(int idZaglavlja) {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT ZAGNAL FROM ZAG WHERE ZAGID="+idZaglavlja+" ;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public void IzmeniUZAGprilikomKnjizenja(int idZaglavlja, DateTimePicker datumKnjizenja) {
            try
            {
                finObjekat = new FIN();
                int VratiFINPovecanMinusJedan = finObjekat.VratiPovecanID() - 1;
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "UPDATE ZAG SET ZAGNAL=" + VratiFINPovecanMinusJedan + ", ZAGKNJ='" 
                    + datumKnjizenja.Value.Date.ToString("yyyy-MM-dd") + "' WHERE ZAGID="+idZaglavlja+" ;";
                komanda.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
        public void IzmeniUZAGprilikomIsknjizavanja(int idFIN)
        {
            try
            {
                finObjekat = new FIN();
                int VratiFINPovecanMinusJedan = finObjekat.VratiPovecanID() - 1;
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "UPDATE ZAG SET ZAGNAL=0, ZAGKNJ=NULL WHERE ZAGNAL=" + idFIN + " ;";
                komanda.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public int VratiZAGBR1NaOsnovuZAGID(int idZaglavlja) {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT ZAGBR1 FROM ZAG WHERE ZAGID="+idZaglavlja+";";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader[0].ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public void PopuniKontroleNalogaProdaje(DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2, 
            DateTimePicker datumDokumenta, String idZag)
        {
            posjedObjekat = new Posjed();
            if (idZag.Length<=0)
            {
                //rezultat ako je IDzaglavlja iz nalogaProdaje prazan
            }
            else
            {
                //rezultat ako IDzaglavlja iz nalogaProdaje nije prazan
                try
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT ZAGDAT, ZAGMA1, ZAGBR1, ZAGBR2, ZAGDDO FROM ZAG WHERE ZAGID="
                        + Convert.ToInt32(idZag) + "";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        datumUnosa.Text = datareader["ZAGDAT"].ToString();
                        prodajnaJedinica.Text = posjedObjekat.VratiOznakuPosjedaNaOsnovuID(Convert.ToInt32(datareader["ZAGMA1"].ToString()));
                        autoBrojDokumenta1.Text = datareader["ZAGBR1"].ToString();
                        int ZAGBR2 = Convert.ToInt32(datareader["ZAGBR2"].ToString());
                        if (ZAGBR2 == 0)
                        {
                            autoBrojDokumenta2.Text = "";
                        }
                        else
                        {
                            autoBrojDokumenta2.Text = ZAGBR2.ToString();
                        }
                        datumDokumenta.Text = datareader["ZAGDDO"].ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
        }

        public void PopuniKontroleKalkulacije(DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2,
            TextBox poDokumentu, DateTimePicker datumDokumenta, DateTimePicker datumDospeca, String idZag, TextBox osnovicaVisaTarifa, TextBox pdvVisaTarifa, 
            TextBox osnovicaNizaTarifa, TextBox pdvNizaTarifa, TextBox osnovicaOtkup, TextBox pdvOtkup, TextBox osnovicaBezPdv)
        {
            posjedObjekat = new Posjed();
            if (idZag.Length <= 0)
            {
                //rezultat ako je IDzaglavlja iz nalogaProdaje prazan
            }
            else
            {
                //rezultat ako IDzaglavlja iz nalogaProdaje nije prazan
                try
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT ZAGDAT, ZAGMA1, ZAGBR1, ZAGBR2, ZAGNAP, ZAGDDO, ZAGDSP, ZAGO18, ZAGO08, ZAGO00, ZAGP18, ZAGP08, "
                        +" ZAGP00, ZAGO18+ZAGO08+ZAGO00, ZAGO05 FROM ZAG WHERE ZAGID=" + Convert.ToInt32(idZag) + "";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        datumUnosa.Text = datareader["ZAGDAT"].ToString();
                        prodajnaJedinica.Text = posjedObjekat.VratiOznakuPosjedaNaOsnovuID(Convert.ToInt32(datareader["ZAGMA1"].ToString()));
                        autoBrojDokumenta1.Text = datareader["ZAGBR1"].ToString();
                        int ZAGBR2 = Convert.ToInt32(datareader["ZAGBR2"].ToString());
                        if (ZAGBR2 == 0)
                        {
                            autoBrojDokumenta2.Text = "";
                        }
                        else
                        {
                            autoBrojDokumenta2.Text = ZAGBR2.ToString();
                        }
                        poDokumentu.Text = datareader["ZAGNAP"].ToString();
                        datumDokumenta.Text = datareader["ZAGDDO"].ToString();
                        datumDospeca.Text = datareader["ZAGDSP"].ToString();
                        osnovicaVisaTarifa.Text = datareader["ZAGO18"].ToString();
                        pdvVisaTarifa.Text = datareader["ZAGP18"].ToString();
                        osnovicaNizaTarifa.Text = datareader["ZAGO08"].ToString();
                        pdvNizaTarifa.Text = datareader["ZAGP08"].ToString();
                        osnovicaBezPdv.Text = datareader["ZAGO00"].ToString();
                        pdvOtkup.Text = datareader["ZAGP00"].ToString();
                        osnovicaOtkup.Text = datareader["ZAGO05"].ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
        } //TODO - doraditi

        public void PopuniKontroleIzlaznogRacuna(DateTimePicker datumUnosa, ComboBox prodajnaJedinica, TextBox autoBrojDokumenta1, TextBox autoBrojDokumenta2,
            TextBox poDokumentu, DateTimePicker datumDokumenta, DateTimePicker datumDospeca, String idZag)
        {
            posjedObjekat = new Posjed();
            if (idZag.Length <= 0)
            {
                //rezultat ako je IDzaglavlja iz nalogaProdaje prazan
            }
            else
            {
                //rezultat ako IDzaglavlja iz nalogaProdaje nije prazan
                try
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT ZAGDAT, ZAGMA1, ZAGBR1, ZAGBR2, ZAGNAP, ZAGDDO, ZAGDSP FROM ZAG WHERE ZAGID=" + Convert.ToInt32(idZag) + "";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        datumUnosa.Text = datareader["ZAGDAT"].ToString();
                        prodajnaJedinica.Text = posjedObjekat.VratiOznakuPosjedaNaOsnovuID(Convert.ToInt32(datareader["ZAGMA1"].ToString()));
                        autoBrojDokumenta1.Text = datareader["ZAGBR1"].ToString();
                        int ZAGBR2 = Convert.ToInt32(datareader["ZAGBR2"].ToString());
                        if (ZAGBR2 == 0)
                        {
                            autoBrojDokumenta2.Text = "";
                        }
                        else
                        {
                            autoBrojDokumenta2.Text = ZAGBR2.ToString();
                        }
                        poDokumentu.Text = datareader["ZAGNAP"].ToString();
                        datumDokumenta.Text = datareader["ZAGDDO"].ToString();
                        datumDospeca.Text = datareader["ZAGDSP"].ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
        } //TODO - doraditi

        public int VratiMagacacinIDNaOsnovuZAGID(int zagID) {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT ZAGMA1 FROM ZAG WHERE ZAGID=" + zagID + ";";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    rezultat = Convert.ToInt32(datareader[0].ToString());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public int VratiPreduzeceIDNaOsnovuZAGID(int zagID)
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT ZAGPRE FROM ZAG WHERE ZAGID=" + zagID + ";";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader[0].ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }
    }
}

